package com.hanamaki.homework.lesson;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

public class Demo04 {

    /**
     * // 从键盘循环输入正整数，当输入-1时结束，统计输入的正整数的个数。
     */
    public static void count_int() {
        System.out.println("请输入正整数");
        Scanner scanner = new Scanner(System.in);
        int i = scanner.nextInt();
        /* 计数器 */
        int count = 0;
        while (i != -1) {
            if (i > 0) {
                count++;
            }
            System.out.println("请继续输入正整数：");
            i = scanner.nextInt();
        }

        System.out.println("正整数的个数为：" + count);

    }

    /**
     * 从键盘输入一个整数，判断该数是否素数。
     * 素数是只能被1 和本身整除的数。可用穷举法来判断一个数是否是素数。
     */
    public static void primeNumbers() {

        /* 定义一个 消息  message*/
        String message = null;

        System.out.println("请输入整数");
        Scanner scanner = new Scanner(System.in);
        int i = scanner.nextInt();

        if (i == 0 || i == 1 ) {
            message = "不是素数";
        } else if (i == 2) {
            message = "素数";
        }

        /* 数学公式类 */
//        Math.sqrt(4);
        for (int j = 2; j <= i; j++) {
            if (i % j == 0) {
                message = "不是素数";
            } else {
                message = "素数";
            }
        }

        System.out.println(message);


    }

    /**
     * 输出100以内的所有素数
     */
    public static void print_numbers() {
        /* 定义一个标志位 */
        /* 默认 为假 */
        boolean flag = false;
        for (int i = 2; i < 100; i++) {
            /* 假设 所有的数字 都为 素数 */
            flag = true;
            for (int j = 2; j < i; j++) {
                if (i % j == 0) {
                    flag = false;
                }
            }

            if (flag) {
                System.out.println(i + "\t");
            }

        }

    }

    /**
     * 打印倒立的乘法口诀
     */
    public static void printTable() {
        for (int i = 1; i <= 9; i++) {
            for (int k = 0; k < i-1; k++) {
                System.out.print("\t\t");
            }
            for (int j = 9; j >= i; j--) {
                System.out.print(j + "*" + i + "=" + (j * i) + "\t");
            }
            System.out.println();
        }
    }

    /**
     * 5．将一个正整数分解质因数。例如：输入90,打印出90=2*3*3*5。
     * 质因数就是质因数就是一个数的约数，并且是质数，
     * 比如8=2×2×2，2就是8的质因数。
     * 12=2×2×3，2和3就是12的质因数。
     * 把一个式子以12=2×2×3的形式表示，叫做分解质因数。
     */
    public static void ysfj() {

        /* 定义一个消息 */
        StringBuilder message = new StringBuilder();

        System.out.println("请输入一个正整数：");
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        /* 定义一个 最小的 质数 */
        int k = 2;
        /* 打印基本格式 */
        message.append(num).append("=");
        while (k <= num) {
            if (num == k) {
                message.append(num);
                break;
            } else if (num % k == 0) {
                message.append(k).append("*");
                num /= k;
            } else {
                k++;
            }
        }
        System.out.println(message);

    }

    /**
     * 6．输入某年某月某日，判断这一天是这一年的第几天？
     */
    public static void print_days() {
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入年份：");
        int year = scanner.nextInt();
        System.out.println("请输入月份：");
        int month = scanner.nextInt();
        System.out.println("请输入日期：");
        int day = scanner.nextInt();

        /* 定义一个 汇总天数的  变量 */
        int days = 0;
        for (int i = 1; i < month; i++) {
            switch (i) {
                case 2:
                    days += 28;
                    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
                        days++;
                    }
                    break;
                case 4:
                case 6:
                case 9:
                case 11:
                    days += 30;
                    break;
                default:
                    days += 31;
            }
        }
        days += day;

        System.out.println(year + "年" + month + "月" + day + "是" + year + "年的第" + days + "天！");


    }

    /**
     * 可以通过日历类实现
     */
    public static void print_days_calender() {
//        Date date = new Date();// alt + enter
//        System.out.println(date);
//
//        /* 想要格式化日期 需要使用 工具类 */
//        SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
//        String format1 = format.format(date);
//        System.out.println(format1);
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入年份：");
        int year = scanner.nextInt();
        System.out.println("请输入月份：");
        int month = scanner.nextInt();
        System.out.println("请输入日期：");
        int day = scanner.nextInt();

        Calendar date1 = Calendar.getInstance();
        date1.set(year, 0, 1);
        /* 得到 当前日期的时间戳 */
        long date1TimeInMillis = date1.getTimeInMillis();

        Calendar date2 = Calendar.getInstance();
        date1.set(year, month - 1, day);
        /* 得到 当前日期的时间戳 */
        long date2TimeInMillis = date2.getTimeInMillis();

        /* 通过两个毫秒数转化为天数 */
        long result = date2TimeInMillis - date1TimeInMillis;
        System.out.println(result);

        double days = result / 1000 / 60 / 60 / 24;
        System.out.println(days);
    }




    public static void main(String[] args) {

//        count_int();
//        primeNumbers();
//        print_numbers();

//        printTable();
//        ysfj();
//        print_days();

        print_days_calender();

    }


}
